<?php
defined('ENTER_ID') or die('Hacking attempt');

/****************************
 * 功能：加载文件的地图配置
 * 时间：2017/05/16
 * 作者：300js
 ****************************/
class Start
{
    public static function run()
    {
        require(LIBRARY_PATH . 'functions.php');
        require(LIBRARY_PATH . 'Autoload.php');
        self::_loadConf();//加载配置
        self::_registerSysFun();//注册系统方法
        self::_setSysParams();//设置系统参数
        Dispatcher::run();//路由调度
    }

    /**
     * 设置系统参数
     * @author: wzl
     * @date: 2017
     */
    public static function _setSysParams()
    {
        date_default_timezone_set(C('_date_default_timezone_set'));//时间区
    }

    /**
     * 加载系统所需的配置文件
     */
    private static function _loadConf()
    {
        C(include(CONFIG_PATH . 'map.php'));
        C(include(CONFIG_PATH . 'sys.php'));
        C(include(CONFIG_PATH . 'app.php'));
        if ($files = C('_LOAD_SELF_CONFIG')) {
            if (is_array($files)) {
                foreach ($files as $key => $file) {
                    $file_path = CONFIG_PATH . $file;
                    if (is_file($file_path)) {
                        is_numeric($key) ? C(include($file_path)) : C($key, include($file_path));
                    }
                }
            }
        }
    }

    /**
     * 注册系统必备方法
     */
    private static function _registerSysFun()
    {
        spl_autoload_register('Autoload::loadClass');
        set_error_handler('_errorHandle');
        set_exception_handler('_exceptionHandle');
        register_shutdown_function('_shutdownHandle');
    }
}